
const X = Object.create( null );

X.amount = 7 ; // 随机数个数

X.numbers = [] ; // 用来存放随机数的数组

// 用来查找 numbers 数组中是否存在指定值的函数
X.exists = function( value , toIndex ){
    // 这里借助于数组本身的方法实现
    // return X.numbers.includes( value );

    for( let j = 0 ; j < toIndex ; j++ ){
        // 若从X.numbers数组中[0,toIndex)之间找到与变量value中所存储值相等的元素
        if( X.numbers[ j ] === value ){
            return true ; // 只要找到一个重复元素即可终结函数
        }
    }
    return false; 
}

// 用来随机产生 [ begin , end ) 之间的整数值
X.random = function( begin , end ){
    let bound = end - begin ; // 计算随机数区间包含的数字
    let rand = Math.random(); // [ 0 , 1 )
    let float = rand * bound ; // [ 0 , bound )
    let integer = float | 0 + begin ;
    return integer ;
}

X.shake = function(){
    for( let i = 0 ; i < X.amount ; i++ ) {
        let n = X.random( 0 , 33 ); // [ 0 , 33 )
        let m = n + 1 ; // [ 1 , 34 )
        let e = X.exists( m , i );
        if( e ) {
            i-- ;
        } else {
            X.numbers[i] = m ;
        }
    }
}

X.toString = function(){
    return X.numbers.toString();
}

Object.freeze( X );

X.shake();

console.log( X.numbers.toString() );
console.log( X.toString() );